#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort1(char **pp,int n)
{
    //补充完成程序
    int i,j,x;
    char temp[50];
    for(x=0;x<n-1;x++)
    for(i=0;i<n-1-x;i++)
    {
    	j=0;
    	star:
    		if(*(*(pp+i)+j)>*(*(pp+i+1)+j))
    		{
    			strcpy(temp,*(pp+i)+j);
    			strcpy(*(pp+i)+j,*(pp+i+1)+j);
    			strcpy(*(pp+i+1)+j,temp);
			}
			if(*(*(pp+i)+j)<*(*(pp+i+1)+j))
			continue;
			if(*(*(pp+i)+j)==*(*(pp+i+1)+j))
			{
				j++;
				goto star;
			}
			if(*(*(pp+i)+j)!='\0'&&*(*(pp+i+1)+j)=='\0')
			{
				strcpy(temp,*(pp+i)+j);
    			strcpy(*(pp+i)+j,*(pp+i+1)+j);
    			strcpy(*(pp+i+1)+j,temp);
			}
			if(*(*(pp+i)+j)=='\0'&&*(*(pp+i+1)+j)!='\0')
			continue;
	}
}
void output1(char *p[],int n)
{
 //补充完成程序 
 int i;
 for(i=0;i<n;i++)
 printf("%s\n",p[i]);
}
int main()
{
    void sort1(char **pp,int n);
    void output1(char *p[],int n);
    char str[50],*cp[20];
    int n,l,i;
    while(scanf("%d\n",&n)!=EOF)
    {
          for(i=0;i<n;i++)
          {
              gets(str); 
             //start
              cp[i]=(char *)calloc(50,sizeof(char)); //在此写动态开辟并存储程序
              strcpy(cp[i],str);
             //end
           }
           sort1(cp,n);
           output1(cp,n);
    }
    return 0;
}